梅森素数

性质

本节研究 an1a^n-1素数。

通过下表观察可得知:

  1. aa 是奇数时,an1a^n-1 是偶数。 所以aa 只能为偶数。
  1. an1a^n-1 总是被 a1a-1整除。
    • 证明:几何级数公式(Geometric Series)

      xn1=(x1)(xn1+xn2++x2+x+1)x^{n}-1=(x-1)\left(x^{n-1}+x^{n-2}+\cdots+x^{2}+x+1\right)

      展开右边乘法即可证明几何级数。

    所以aa只能为2。

观察下表2n12^n-1的情况:

  1. 不是所有2n12^n-1都是素数。
  1. 如果nnmm整除,则2n12^n-12m12^m-1整除。
    • 观察

      如果nn是偶数,2n12^n-1221=32^2-1=3整除。

      如果nn被3整除,2n12^n-1231=72^3-1=7整除。

      如果nn被5整除,2n12^n-1251=312^5-1=31整除。

    • 证明:同样利用几何级数公式,2n=(2m)k2^n=(2^{m})^k

      2n1=(2m)k1=(2m1)((2m)k1+(2m)k2++(2m)2+(2m)+1)2^{n}-1=\left(2^{m}\right)^{k}-1=\left(2^{m}-1\right)\left(\left(2^{m}\right)^{k-1}+\left(2^{m}\right)^{k-2}+\cdots+\left(2^{m}\right)^{2}+\left(2^{m}\right)+1\right)

    所以nn一定是素数。

命题1. 如果整数a2a\ge2n2n\ge2,如果an1a^n-1是素数,则aa一定等于2且nn一定是素数。

Proposition 1. If an1a^n-1 is prime for some numbers a2a\ge2 and n2n\ge2, then a must equal 2 and n must be a prime.
  1. 不是所有的2p12^p-1都是素数。

应用

在密码学中,有限域中的运算性能极大影响密码协议的实现。在这些运算中,逆运算是最复杂的,模运算、乘法次之。

如果有限域选择梅森素数,得益于它的优良性质,可以极大提高运算效率,特别是有限域下的模运算、乘法操作。

Modular Reduction

根据性质:2p1(mod2p1)2^p \equiv 1 \pmod{2^p-1}

可得:x=a2p+ba+b(mod2p1)x=a\cdot 2^p +b\equiv a+b \pmod{2^p-1}

如果将xx写作比特形式,模运算约减为将高位比特串和低位比特串相加

C++伪代码实现(以p=2611p=2^{61}-1为例):

Multiplication

p=2611p=2^{61}-1为例,aabb相乘后,得到一个最多122-bit的数字,用同样的方法,将高位比特和低位比特相加。(如果结果更长,就按段一直叠加)

在实现上可以使用64-bit乘法优化(可以用指令集加速):

Reference

  1. 数论概论(原书第4版本) A Friendly Introduction to Number Theory.
  1. 代码参考于emp-zk.